﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SST_BL;
using System.Data;

namespace TCU
{
    public partial class Asignaciones : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {
                this.GetUltimasAsignaciones();
                this.GetAsignaciones();

                SqlDataSource sqldt = new SqlDataSource();
                sqldt.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SSTConnectionString"].ToString();
                sqldt.SelectCommand = "SELECT [CircuitoID], [NombreCircuito] FROM [Circuito] WHERE ([FechaBorrado] IS NULL)";
                dropCircuito.DataSource = sqldt;
                dropCircuito.DataTextField = "NombreCircuito";
                dropCircuito.DataValueField = "CircuitoID";
                dropCircuito.DataBind();

                dropCircuito.Items.Insert(0, new ListItem("-Seleccionar-", "-1"));
                dropCircuito.SelectedIndex = 0;

            }
        }

        protected void btnSubmitAsignacion_Click(object sender, EventArgs e)
        {
            txtNotification.Text = "";
            txtNotification.ForeColor = System.Drawing.Color.Red;
            int circuitoID = int.Parse(dropCircuito.SelectedValue);
            int habilidadID = int.Parse(dropHabilidad.SelectedValue);
            string realizadaPorSinFormato = Request.ServerVariables["REMOTE_USER"].ToString(); 
            string realizdaPor = realizadaPorSinFormato.Substring(realizadaPorSinFormato.IndexOf("\\") + 1); //El usuario actual
            if (MainBL.getAsignacion(circuitoID, habilidadID, realizdaPor))
            {
                txtNotification.Text = "La asignacion pudo ser realizada con exito! ";
                txtNotification.ForeColor = System.Drawing.Color.Green;
            }
            else {
                txtNotification.Text = "La asignacion no se pudo realizar debido a que la habilidad no se encuentra en ese circuito o la habilidad no tiene a nadie asignado!";
                txtNotification.ForeColor = System.Drawing.Color.Red;
            }
            this.GetUltimasAsignaciones();
            this.GetAsignaciones();
        }


        
        private void GetUltimasAsignaciones() {
            string informaticoSinFormato = Request.ServerVariables["REMOTE_USER"].ToString();
            string informatico = informaticoSinFormato.Substring(informaticoSinFormato.IndexOf("\\") + 1);            
            DataTable asignaciones = MainBL.getUltimasAsignaciones(informatico);
            gvAsignacionesGlobales.DataSource = asignaciones;
            gvAsignacionesGlobales.DataBind();

        }

        private void GetAsignaciones() {
            DataTable asignaciones = MainBL.GetAsignaciones();
            gvAsignacionesPrevias.DataSource = asignaciones;
            gvAsignacionesPrevias.DataBind();
        }

        protected void dropCircuito_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlDataSource sqldt = new SqlDataSource();
            sqldt.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SSTConnectionString"].ToString();
            sqldt.SelectCommand = "SELECT HabilidadID, NombreHabilidad FROM Habilidad WHERE FechaBorrado IS NULL AND Circuito = " + int.Parse(dropCircuito.SelectedValue);
            dropHabilidad.DataSource = sqldt;
            dropHabilidad.DataTextField = "NombreHabilidad";
            dropHabilidad.DataValueField = "HabilidadID";
            dropHabilidad.DataBind();
            dropHabilidad.Items.Insert(0, new ListItem("-Seleccionar-", "-1"));
            dropHabilidad.SelectedIndex = 0;


            SqlDataSource sqldtList = new SqlDataSource();
            sqldtList.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SSTConnectionString"].ToString();
            sqldtList.SelectCommand = "SELECT DISTINCT i.NombreCompleto "
                                    +" FROM Informatico as i INNER JOIN InformaticoCircuito AS ic ON i.InformaticoID=ic.InformaticoID"
                                    +" INNER JOIN RolInformatico as ri ON i.InformaticoID=ri.InformaticoID"
                                    +" WHERE i.FechaBorrado IS NULL AND ic.FechaBorrado IS NULL AND ri.RolID = 2 AND ic.CircuitoID = " + int.Parse(dropCircuito.SelectedValue);
            listInformaticosDisponibles.DataSource = sqldtList;
            listInformaticosDisponibles.DataTextField = "NombreCompleto";
            listInformaticosDisponibles.DataValueField = "NombreCompleto";
            listInformaticosDisponibles.DataBind();

            lbHabilidad.Enabled = true;
            dropHabilidad.Enabled = true;
        }

        protected void dropHabilidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlDataSource sqldtList = new SqlDataSource();
            sqldtList.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SSTConnectionString"].ToString();
            sqldtList.SelectCommand = "SELECT DISTINCT i.NombreCompleto"+
                                        " FROM Informatico as i INNER JOIN InformaticoCircuito AS ic ON i.InformaticoID=ic.InformaticoID"+
                                        " INNER JOIN InformaticoHabilidad as ih ON i.InformaticoID=ih.InformaticoID INNER JOIN RolInformatico as ri ON i.InformaticoID=ri.InformaticoID" +
                                        " WHERE i.FechaBorrado IS NULL AND ic.FechaBorrado IS NULL AND ri.RolID = 2 AND ic.CircuitoID = " + int.Parse(dropCircuito.SelectedValue) 
                                        + " AND ih.HabilidadID = " + int.Parse(dropHabilidad.SelectedValue);
            listInformaticosDisponibles.DataSource = sqldtList;
            listInformaticosDisponibles.DataTextField = "NombreCompleto";
            listInformaticosDisponibles.DataValueField = "NombreCompleto";
            listInformaticosDisponibles.DataBind();

            btnSubmitAsignacion.Enabled = true;
        }

        

    }
}